package com.lsc.jdbc.demo.unit.testng.paramter;

import com.lsc.jdbc.demo.unit.testng.paramter.util.FileUtils;
import com.lsc.jdbc.demo.unit.testng.paramter.util.JdbcUtils_C3P0;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.io.IOException;
import java.sql.*;
import java.util.Arrays;


/**
 * 在使用 参数化是  数据源  和 测试方法的 数据类型 尽量使用 String 包装类
 * auto_increment
 * 参数化的第一步  将固定的值 修改为 参数列表
 * 2. 整理数据源
 * 3. 将数据源中的数据 通过 @Test 注解 传递给 测试方法
 */
public class CalcAddTest {


    @Test(dataProvider = "dp3")
    public void t(String a, String b, String exp) {

        CalcAdd calcAdd = new CalcAdd();
        int add = calcAdd.add(Integer.parseInt(a), Integer.parseInt(b));
        System.out.println(add);

        /* 断言  来判断测试是否通过*/
        Assert.assertEquals(add, Integer.parseInt(exp));
    }


    /**
     * 静态 赋值  的数据源
     * @return
     */
    @DataProvider
    public Object[][] dp1() {
        /*  Object  二维数组 的定义  */
        Object[][] result = {
                {1, 2, 3},
                {2, 3, 5},
                {4, 3, 7},
                {3, 3, 7}
        };
        return result;
    }

    @DataProvider
    public Object[][] dp2() {
        return JdbcUtils_C3P0.getSqlContent("number", new Object[]{"num_a", "num_b", "num_exp"});
    }

    @DataProvider
    public Object[][] dp3() {
       return FileUtils.getFileContent("D:\\CodeSpace\\javaspace\\day01\\src\\com\\lsc\\jdbc\\demo\\unit\\testng\\paramter\\sql\\dataSources.txt");
    }


}
